<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 2.不允许重复声明
        /*
            var a = 2
            let a = 1//Identifier 'a' has already been declared
        */ 

        // 3.变量提升被取消
        /*
            console.log(name)//Cannot access 'name' before initialization
            let name = 'mikaisa'
        */ 

        // 看一下下面这段代码, 是不是以为会打印全局里的mikaisa?
        // 补充一个暂存性死区的概念, 我们在块级/全局/函数作用域里使用let声明的变量, 在这个声明的语句之前就是暂存性死区, 如果你在这个区域里对于该变量进行访问, 则会报错。其实和变量提升听上去也挺像的, 但还真就是两回事
        /*
                    let name = 'mikaisa'
                    function demo(){
                        console.log(name);
                        let name = 'mks'
                    }
                    demo()
        */ 

        
        // 不与顶层window挂钩
        var age = 19
        console.log(window.age);//19
        let age2 = 18
        console.log(window.age2);//undefined
    </script>
</body>
</html>